package org.semanticflash.rdf.vocab
{
	
	import org.semanticflash.rdf.values.IRI;
	


	/**
	 * 
	 * http://www.w3.org/1999/02/22-rdf-syntax-ns#
	 * 
	 * @author aldo.bucchi@gmail.com
	 * 
	 */		
	public class Vrdf extends Vocabulary
	{

		public static const ns:Namespace = new Namespace( "rdf", "http://www.w3.org/1999/02/22-rdf-syntax-ns#" );			
		
		public static const _RDF						:IRI = iri( ns, "RDF" );

		public static const _ID						:IRI = iri( ns, "ID" );

		public static const _nodeID					:IRI = iri( ns,  "nodeID" );	
		public static const _type						:IRI = iri( ns,  "type" );
		public static const _resource					:IRI = iri( ns,  "resource" );	
		public static const _about					:IRI = iri( ns,  "about" );	
		public static const _parseType				:IRI = iri( ns,  "parseType" );	
		
		public static const _subject					:IRI = iri( ns,  "subject" );
		public static const _predicate				:IRI = iri( ns,  "predicate" );	
		public static const _object					:IRI = iri( ns,  "object" );

		public static const _Statement				:IRI = iri( ns,  "Statement" );		
		public static const _Description				:IRI = iri( ns,  "Description" );
		public static const _Property					:IRI = iri( ns,  "Property" );

		public static const _Seq						:IRI = iri( ns,  "Seq" );	
		public static const _Alt						:IRI = iri( ns,  "Alt" );	
		public static const _Bag						:IRI = iri( ns,  "Bag" );	

		public static const _first					:IRI = iri( ns,  "first" );	
		public static const _rest						:IRI = iri( ns,  "rest" );	
		public static const _nil						:IRI = iri( ns,  "nil" );
		
		
		/**
		 * 
		 * The XSD datatype of an XML literal
		 * 
		 */		
		public static const _XMLLiteral				:IRI = iri( ns,  "XMLLiteral" );
		


		/**
		 * 
		 * returns true if iri is one of rdf:Seq, rdf:Alt, rdf:Bag
		 * 
		 * @param iri
		 * @return 
		 * 
		 */
		public static function isCollection( iri:IRI ):Boolean
		{
			if ( iri === _Seq ) return true;
			if ( iri === _Alt ) return true;
			if ( iri === _Bag ) return true;
			return false;					
		}



		
	}
}